TYPE

rowid

type rowid

The primary key of a database record.

Implemented as a 64-bit integer, but requires explicit conversion to and from integer with the constructor rowid(integer) and the method rowid.to_integer(). ROWID values cannot be negative.

ROWID supports the standard complement of comparison operators (==, !=, <, >, <= and >=), and conversion to and from GTV.

Examples:

function get_rowid(username: text) {
    val u = user @ { .name == username };
    return u.rowid;
}

val freds_rowid: rowid = user @ { .name == "Fred" } ( .rowid );

val valid_rowids: list<rowid> = user @* { .rowid >= min_rowid };

Note that the recommended way to manipulate entity values is via typed references (e.g. u: user in the above example), as this is type-safe. Reliance on rowid is only recommended in rare cases where the standard pattern is not possible, as the compiler does not know what type of entity a given rowid value is intended to reference. Consider the example below:

entity user {}
entity company {}

val u: user = user @ {};
val c: company = company @ {};

val u2: user = c; // Bad, and the compiler tells us so.

val u_rowid: rowid = c.rowid; // Likely to lead to errors, but the compiler can't help us.

See Also

  1. integer - Rell Standard Library
  2. gtv - Rell Standard Library

Since

0.9.0

Methods
© 2026 Chromia